3D移動是在2D移動的基礎上多加了Z軸方向
(注意 : translateZ一般用px單位)
CSS:
body {
/* 透視寫在被觀察元素的父盒子上 */
perspective: 200px;
}
div {
transition: all 3s;
width: 200px;
height: 200px;
background-color: pink;
/* transform:translateX(100px);
transform:translateY(100px); */
/* transform: translateX(100px) translateY(100px) translateZ(100px); */
/* transform: translate3d(400px, 100px, 100px); */
/* xyz是不能省略的 如果沒有需要寫0 */
}
div:hover {
transform: translate3d(400px, 100px, 100px);
}
HTML:
<div></div>
在2D平面產生進大遠小視覺立體,但是只是效果二維的
(理解成3D物體投影在2D平面內)
(透視寫在被觀察元素的父盒子上)
3D旋轉可以讓元素沿著x,y,z軸或者自定義軸進行旋轉
語法:
對於元素旋轉的方向判斷可以使用左手準則
CSS:
<style>
body {
perspective: 300px;
}
div {
width:300px;
height:300px;
background-color: blanchedalmond;
display: block;
margin: 100px auto;
transition: all 2s;
}
div:hover {
/* transform: rotateZ(360deg); */
/* transform: rotate3d(x,y,z,deg); */
transform: rotate3d(1, 1, 1, 360deg);
}
</style>
HTML:
<div>滑鼠放上去將會旋轉</div>
CSS:
body {
perspective: 500px;
}
.box {
position: relative;
width: 200px;
height: 200px;
margin: 100px auto;
transition: all 2s;
/* 讓子元素保持3d立體空間 */
transform-style: preserve-3d;
}
.box:hover {
transform: rotateY(180deg);
}
.box div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: pink;
}
.box div:last-child {
background-color: purple;
transform: rotateX(60deg);
}
HTML:
<div class="box">
<div></div>
<div></div>
</div>